home *** CD-ROM | disk | FTP | other *** search
/ Aminet 7 / Aminet 7 - August 1995.iso / Aminet / comm / tcp / AmiSlate1_2.lha / AmiSlate / SlateRexx / diamond.rexx < prev    next >
OS/2 REXX Batch file  |  1995-05-24  |  1KB  |  73 lines

  1. /* An Arexx script for use with AmiSlate:  
  2.  
  3.     Draws that "diamond out of straight lines" design that
  4.     was so nifty in elementary school ;-)
  5.     
  6. */
  7. parse arg CommandPort ActiveString
  8.  
  9.  
  10. if (length(CommandPort) == 0) then do
  11.     say ""
  12.     say "Usage:  rx diamond.rexx <REXXPORTNAME>"
  13.     say "        (REXXPORTNAME is usually AMISLATE)"
  14.     say ""
  15.     say "Or run from the Rexx menu within AmiSlate."
  16.     say ""
  17.     exit 0
  18.     end
  19.     
  20.  
  21. address (CommandPort)
  22. options results
  23.  
  24. /* Calculate center of drawing area */
  25. GetWindowAttrs stem win.
  26. mx = trunc((win.width-58)/2)
  27. my = trunc((win.height-53)/2)
  28. tx = mx * 2
  29. ty = my * 2
  30.  
  31. /* Get user's current foreground color */
  32. GetStateAttrs stem state.
  33. SetFPen state.fpen        /* copy it to our color */
  34.  
  35. x = 0
  36. y = 0
  37.  
  38. StringRequest stem message. '"'||"Diamond Request"||'"' 15 '"'||"How many partitions in the diamond?"||'"'
  39. numberofpartitions = message.message
  40. xstep = trunc((mx * 2) / numberofpartitions)
  41. ystep = trunc((my * 2) / numberofpartitions)
  42.  
  43. if (xstep < 1) then xstep = 1
  44. if (ystep < 1) then ystep = 1
  45.  
  46. /* starting co-ords */
  47. x = 0
  48. y = 0
  49.  
  50. /* Draw central horizontal line */
  51. line 0 my tx my
  52.  
  53. /* Draw neato mid-lines */
  54. do while (x <= mx)
  55.     /* upper right quadrant */
  56.     line (mx+x) my mx y
  57.     
  58.     /* lower right quadrant */
  59.     line (mx+x) my mx (ty-y)
  60.  
  61.     /* upper right quadrant */
  62.     line (mx-x) my mx y
  63.     
  64.     /* lower right quadrant */
  65.     line (mx-x) my mx (ty-y)
  66.  
  67.     /* update for next time */
  68.     x = x + xstep
  69.     y = y + ystep
  70.     
  71.     /* Quit early if we're done already */
  72.     if (y > my) then exit
  73. end